#ifndef MAPCACHE_H
#define MAPCACHE_H

#include "elementmap.h"
#include <QObject>

struct ListNode{
    ElementMap* ele;
    ListNode* next;
};

class MapCache:public QObject
{
    Q_OBJECT
public:
    //图片缓存构造函数，确定缓存大小
    MapCache(int size);

    //析构函数，释放list
    ~MapCache();

    //将第layer层的第x行y列图存入缓存
    void push(int layer, int x, int y);

    //查找layer层的第x行y列图是否在缓存中，若在将其放到第一个
    bool find(int layer, int x, int y);

    //拿到缓存中第一个图
    const QPixmap& get();

    //清除缓存
    void clear();

private:
    int cache_size;
    int node_count;
    ListNode* first_list_node;

    //释放节点
    void deleteNode(ListNode* node);

signals:
    void map_update();
};

#endif // MAPCACHE_H
